import React from 'react-native';
import AsyncStorage from '@react-native-community/async-storage';

class StorageUtil {
  /**
   * 获取
   * @param key
   * @returns {Promise<T>|*|Promise.<TResult>}
   */
  static get(key) {
    return AsyncStorage.getItem(key)
      .then((value) => {
        if (value && value != '') {
          const jsonValue = JSON.parse(value);
          return jsonValue;
        } else {
          return null;
        }
      })
      .catch((e) => {
        debugger
        return null;
      });
  }

  /**
   * 保存
   * @param key
   * @param value
   * @returns {*}
   */
  static save(key, value) {
    if(value){
      return AsyncStorage.setItem(key, JSON.stringify(value));
    }
  }

  /**
   * 更新
   * @param key
   * @param value
   * @returns {Promise<T>|Promise.<TResult>}
   */
  static update(key, value) {
    return StorageUtil.get(key).then((item) => {
      value =
        typeof value === 'string' ? value : Object.assign({}, item, value);
      return AsyncStorage.setItem(key, JSON.stringify(value));
    });
  }
  /**
   * 更新
   * @param key
   * @returns {*}
   */
  static delete(key) {
    return AsyncStorage.removeItem(key);
  }

  /**
   * 删除所有配置数据
   * @returns {Promise<string>}
   */
  static clear() {
    return AsyncStorage.clear();
  }
}

export default StorageUtil;
